package com.training.util;

import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;

import es.dmoral.toasty.Toasty;

/**
 * Toasty工具类，用于在UI线程中安全显示Toasty提示
 */
public class ToastyUtil {
    
    private static Handler mainHandler = new Handler(Looper.getMainLooper());
    
    /**
     * 在UI线程中显示错误提示
     * @param context 上下文
     * @param message 消息内容
     * @param duration 显示时长
     * @param withIcon 是否显示图标
     */
    public static void showError(Context context, String message, int duration, boolean withIcon) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Toasty.error(context, message, duration, withIcon).show();
        } else {
            mainHandler.post(() -> Toasty.error(context, message, duration, withIcon).show());
        }
    }
    
    /**
     * 在UI线程中显示成功提示
     * @param context 上下文
     * @param message 消息内容
     * @param duration 显示时长
     * @param withIcon 是否显示图标
     */
    public static void showSuccess(Context context, String message, int duration, boolean withIcon) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Toasty.success(context, message, duration, withIcon).show();
        } else {
            mainHandler.post(() -> Toasty.success(context, message, duration, withIcon).show());
        }
    }
    
    /**
     * 在UI线程中显示信息提示
     * @param context 上下文
     * @param message 消息内容
     * @param duration 显示时长
     * @param withIcon 是否显示图标
     */
    public static void showInfo(Context context, String message, int duration, boolean withIcon) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Toasty.info(context, message, duration, withIcon).show();
        } else {
            mainHandler.post(() -> Toasty.info(context, message, duration, withIcon).show());
        }
    }
    
    /**
     * 在UI线程中显示警告提示
     * @param context 上下文
     * @param message 消息内容
     * @param duration 显示时长
     * @param withIcon 是否显示图标
     */
    public static void showWarning(Context context, String message, int duration, boolean withIcon) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Toasty.warning(context, message, duration, withIcon).show();
        } else {
            mainHandler.post(() -> Toasty.warning(context, message, duration, withIcon).show());
        }
    }
    
    /**
     * 在UI线程中显示普通提示
     * @param context 上下文
     * @param message 消息内容
     * @param duration 显示时长
     */
    public static void showNormal(Context context, String message, int duration) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            Toasty.normal(context, message, duration).show();
        } else {
            mainHandler.post(() -> Toasty.normal(context, message, duration).show());
        }
    }
}